import * as LoginApi from "../api/login";
const app = getApp(); // 全局对象

const AuthUtil = {
  /**
   * @description 判断是否登录并跳转业务场景
   * @param {Object} options - 跳转参数
   * @param {String} options.pathUrl - 跳转路径
   * @param {Object} options.scene - 可选场景参数（如扫码场景）
   */
  handleLoginAndNavigate(options = {}) {
    return new Promise((resolve, reject) => {
      // 调用 wx.login 获取登录凭证
      wx.login({
        success(res) {
          console.log(res);
          app.globalData.code = res.code;

          // 调用登录接口获取 token
          LoginApi.getTokenCreate(app, res.code)
            .then((create) => {
              console.log(create);
              const { is_bind, token } = create;

              // 保存 token
              wx.setStorageSync("token", token);
              app.globalData.isBind = is_bind;

              // 如果已绑定，获取用户信息
              if (is_bind) {
                LoginApi.getUserInfo(app).then((userInfo) => {
                  wx.setStorageSync("mobile", userInfo.mobile);
                  app.globalData.userInfo = {
                    nickname: userInfo.nickname,
                    headimg: userInfo.headimg,
                  };
                  console.log("用户信息:", app.globalData.userInfo);
                });
              }

              // 处理扫码场景逻辑
              if (options.scene) {
                if (is_bind) {
                  // 如果已绑定，直接完成业务操作
                  resolve({ isBind: true });
                } else {
                  // 未绑定时显示提示框
                  reject({ isBind: false, showDialog: true });
                }
              } else {
                // 普通跳转场景
                if (is_bind) {
                  resolve({ isBind: true });
                  wx.navigateTo({ url: options.pathUrl });
                } else {
                  reject({ isBind: false, showDialog: true });
                }
              }
            })
            .catch((err) => {
              console.error("获取token失败", err);
              reject(err);
            });
        },
        fail(err) {
          console.error("wx.login失败", err);
          reject(err);
        },
      });
    });
  },
};

export default AuthUtil;
